package planificadorrr2;

import java.util.Random;

public class Procesos {
    private int id;                          //Identificador del Proceso
    private int ejecucion, respuesta;         //De tiempo
    private int rafaga;                       //Rafaga del Proceso
    private int tamano;                       //Tamaño de Memoria
    private String nombre;            //Estado de cada Proceso
    
    public Procesos(int id, int tam){
            Random r = new Random();                  //Objeto r de tipo aleatorio
            int x=(r.nextInt( (int)(tam*.31)) )+(int)(tam*.2);//Se realiza un case para asegurar que el tamaño sea entero y a su vez se delimita que este entre 20% y 50%
            this.id=id;                            //Se asigna un id del proceso
            this.nombre="Proceso "+id;              //Se le pone un nobre al proceso
            this.tamano=x;                         //Se le asigna el valor calculado de memoria anteriormente 
            this.rafaga=r.nextInt(10)+1;           //Se le asigna al proceso una rafaga aleatoria entre 1 y 10               
    }
    public static void RestaQ(Procesos proces, int Q){

                            // Para poder restar , se determina primero si a la rafaga del proceso 
                            //se le resta su propia rafaga( en casa de q esta sea menor q el quantum) 
                            //o bien si se le resta el valor del quantum (en caso que dicha rafaga sea mayor que el quantum)
                            int aux3= proces.getRafaga()-Q;
                            
                            if(aux3<0)
                                aux3=proces.getRafaga();
                            else
                                aux3=Q;
                                //Retardo para poder Visualizar la Simulacion
                            try{
                                    Thread.sleep(3000);
                                }catch(InterruptedException e){}
                            
                            proces.setRafaga(proces.getRafaga()-aux3);// A cada proceso de la lista se le asigna el valor restante de su rafaga
        
    }
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getEjecucion() {
        return ejecucion;
    }

    public void setEjecucion(int ejecucion) {
        this.ejecucion = ejecucion;
    }

    public int getRespuesta() {
        return respuesta;
    }

    public void setRespuesta(int respuesta) {
        this.respuesta = respuesta;
    }

    public int getRafaga() {
        return rafaga;
    }

    public void setRafaga(int rafaga) {
        this.rafaga = rafaga;
    }

    public int getTamano() {
        return tamano;
    }

    public void setTamano(int tamano) {
        this.tamano = tamano;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
}
